/**
 * ClassName: IndexController
 * Package: org.example.controller
 * Description: 首页控制器
 *
 * @Author BCXJ
 * @Create 2025/10/6 02:15
 * @Version 1.0
 * @Since 1.0
 */
package org.example.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 首页控制器
 * 提供系统欢迎页面和API文档
 */
@Controller
public class IndexController {
    
    private static final Logger logger = LoggerFactory.getLogger(IndexController.class);
    
    /**
     * 首页
     * 
     * @return 欢迎信息和API文档
     */
    @RequestMapping("/")
    @ResponseBody
    public String index() {
        logger.info("【Web消费者】访问首页");
        
        StringBuilder sb = new StringBuilder();
        sb.append("<html><head><meta charset='UTF-8'><title>Dubbo Demo</title>");
        sb.append("<style>");
        sb.append("body { font-family: Arial, sans-serif; margin: 40px; background: #f5f5f5; }");
        sb.append("h1 { color: #333; }");
        sb.append("h2 { color: #666; margin-top: 30px; }");
        sb.append(".api { background: white; padding: 15px; margin: 10px 0; border-radius: 5px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }");
        sb.append(".api-title { color: #4CAF50; font-weight: bold; font-size: 16px; }");
        sb.append(".api-desc { color: #666; margin: 5px 0; }");
        sb.append(".api-url { color: #2196F3; }");
        sb.append("a { color: #2196F3; text-decoration: none; }");
        sb.append("a:hover { text-decoration: underline; }");
        sb.append("</style></head><body>");
        
        sb.append("<h1>欢迎使用 Dubbo 示例项目！</h1>");
        sb.append("<p>这是一个完整的 Dubbo 服务示例，包含基于注解和基于XML的两种服务提供方式。</p>");
        
        sb.append("<h2>一、用户服务接口（基于注解）</h2>");
        
        sb.append("<div class='api'>");
        sb.append("<div class='api-title'>1. 获取用户名</div>");
        sb.append("<div class='api-desc'>描述：根据用户ID获取用户名</div>");
        sb.append("<div class='api-url'>URL: <a href='/user/getUserName?userId=1001' target='_blank'>/user/getUserName?userId=1001</a></div>");
        sb.append("</div>");
        
        sb.append("<div class='api'>");
        sb.append("<div class='api-title'>2. 用户注册</div>");
        sb.append("<div class='api-desc'>描述：注册新用户</div>");
        sb.append("<div class='api-url'>URL: <a href='/user/register?username=zhangsan&password=123456' target='_blank'>/user/register?username=zhangsan&password=123456</a></div>");
        sb.append("</div>");
        
        sb.append("<h2>二、订单服务接口（基于XML）</h2>");
        
        sb.append("<div class='api'>");
        sb.append("<div class='api-title'>3. 获取订单信息</div>");
        sb.append("<div class='api-desc'>描述：根据订单ID获取订单详细信息</div>");
        sb.append("<div class='api-url'>URL: <a href='/order/getOrderInfo?orderId=100001' target='_blank'>/order/getOrderInfo?orderId=100001</a></div>");
        sb.append("</div>");
        
        sb.append("<div class='api'>");
        sb.append("<div class='api-title'>4. 创建订单</div>");
        sb.append("<div class='api-desc'>描述：为指定用户和产品创建订单</div>");
        sb.append("<div class='api-url'>URL: <a href='/order/createOrder?userId=1001&productId=2001' target='_blank'>/order/createOrder?userId=1001&productId=2001</a></div>");
        sb.append("</div>");
        
        sb.append("<h2>三、技术架构</h2>");
        sb.append("<ul>");
        sb.append("<li>Dubbo版本: 2.7.2</li>");
        sb.append("<li>注册中心: Zookeeper 3.7.1</li>");
        sb.append("<li>Spring版本: 5.2.9.RELEASE</li>");
        sb.append("<li>服务提供者: 基于注解（UserService）+ 基于XML（OrderService）</li>");
        sb.append("<li>服务消费者: SpringMVC + XML配置</li>");
        sb.append("</ul>");
        
        sb.append("<h2>四、使用说明</h2>");
        sb.append("<ol>");
        sb.append("<li>确保Zookeeper服务已启动（端口：2181）</li>");
        sb.append("<li>启动注解方式的服务提供者：AnnotationProviderApplication</li>");
        sb.append("<li>启动XML方式的服务提供者：XmlProviderApplication</li>");
        sb.append("<li>部署Web消费者到Tomcat或其他Web容器</li>");
        sb.append("<li>访问上述API接口进行测试</li>");
        sb.append("</ol>");
        
        sb.append("</body></html>");
        
        return sb.toString();
    }
}

